import $utils from './utils'
import sign from './sign'

const {shareCode, tk} = $utils.getUrlParams()

const $request = {
    // 基础配置
    defaults: {
        baseURL: '',
        timeout: 0,
        headers: {
            'Content-Type': 'application/json'
        }
    },

    // 发送请求
    request: function (config) {
        config.headers ||= {}
        config.headers['X-Timestamp'] = Date.now()
        const token = tk || localStorage.getItem('token')
        config.headers.Authorization = token

        // 合并配置
        var mergedConfig = this._mergeConfig(config);

        // 构建完整URL
        var url = mergedConfig.baseURL
            ? mergedConfig.baseURL.replace(/\/$/, '') + '/' + mergedConfig.url.replace(/^\//, '')
            : mergedConfig.url;

        // 转换data为JSON字符串(如果是POST/PUT等方法)
        var data = mergedConfig.data;
        // if (data && ['POST', 'PUT', 'PATCH'].indexOf((mergedConfig.method || 'GET').toUpperCase()) !== -1) {
        //     if (mergedConfig.headers['Content-Type'] === 'application/json') {
        //         data = JSON.stringify(data);
        //     }
        // }
        const method = mergedConfig.method || 'GET'
        const signHeaders = sign(data)

        // 返回Promise
        return new Promise(function (resolve, reject) {
            $.ajax({
                url: API_BASE + url,
                method,
                headers: {
                    ...mergedConfig.headers || {},
                    ...signHeaders
                },
                data: data,
                dataType: mergedConfig.dataType || 'json',
                timeout: mergedConfig.timeout,
                xhrFields: {
                    withCredentials: true // 发送浏览器存储的 Cookie
                },
                success: function (response) {
                    if (response.code === 200) {
                        resolve(
                            response.data,
                        );
                    } else {
                        reject(response)
                    }

                },
                error: function (jqXHR) {
                    reject({
                        message: jqXHR.statusText,
                        response: {
                            data: jqXHR.responseJSON || jqXHR.responseText,
                            status: jqXHR.status,
                            statusText: jqXHR.statusText
                        },
                        config: mergedConfig
                    });
                }
            });
        });
    },

    // 合并配置
    _mergeConfig: function (config) {
        return $.extend(true, {}, this.defaults, config);
    },

    // HTTP方法快捷方式
    get: function (url, data, config) {
        return this.request($.extend({}, config, { method: 'GET', data, url: url }));
    },

    post: function (url, data, config) {
        return this.request($.extend({}, config, { method: 'POST', url: url, data: data }));
    },

    put: function (url, data, config) {
        return this.request($.extend({}, config, { method: 'PUT', url: url, data: data }));
    },

    delete: function (url, config) {
        return this.request($.extend({}, config, { method: 'DELETE', url: url }));
    }
};


export default {
    // 基本信息
    getBase: function () {
        return $request.get(`/portal/tax/share/getShareReport`, {
           shareCode
        })
    },
    // 纳税信息
    getTax: function () {
        return $request.get(`/portal/tax/share/v2/getEnterprisePaidTaxesAmount`, {
            shareCode
        })
    },
    // 近三年 正税 附加税
    getPaidTax: function (taxType) {
        return $request.get(`/portal/tax/share/v2/getEnterprisePaidTaxesDataList`, {
            shareCode,
            taxType
        })
    },
    // 开具发票
    getBill: function () {
        return $request.get('/portal/tax/share/v2/getEnterpriseInvoiceInfo', {
            shareCode
        })
    },
    // 申报数据
    getApply: function () {
        return $request.get(`/portal/tax/share/v2/getEnterpriseApplyAmount`, {
            shareCode
        })
    },
    // 取得发票
    getInvoice: function () {
        return $request.get(`/portal/tax/share/v2/getEnterpriseInvoiceInfoForIn`, {
            shareCode
        })
    },
    // 供应商 客户
    getCompany: function () {
        return $request.get(`/portal/tax/share/getEnterpriseInvoiceTopTen`, {
            shareCode
        })
    },
    // 工商司法
    getEnterprise: function () {
        return $request.get('/portal/tax/share/getEnterpriseCases', {
            shareCode
        })
    }
}

// (function (window, $) {
//     // 检查是否存在 jQuery
//     if (!window.jQuery) {
//         throw new Error('$request 需要 jQuery 库，请先引入 jQuery');
//     }

//     // 创建 $request 对象
//     var $request = {
//         // 基础配置
//         defaults: {
//             baseURL: '',
//             timeout: 0,
//             headers: {
//                 'Content-Type': 'application/json'
//             }
//         },

//         // 发送请求
//         request: function (config) {
//             config.headers ||= {}
//             config.headers['X-Timestamp'] = Date.now()
//             config.headers.Authorization = `Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiI3Qzc5MUU1NkYwOUEiLCJjcmVhdGVkIjoxNzUwMzk4OTk0Mjg5LCJleHAiOjE3NTEwMDM3OTQsImlhdCI6MTc1MDM5ODk5NH0.ixan2ikccZMVD7WBWcpXwERgOLPrlip2BlJCAvxRrEh0gEaX0vWkRHzebccvC-wnDgy3GR429mDNBWsDs0nURg`
//             // 合并配置
//             var mergedConfig = this._mergeConfig(config);

//             // 构建完整URL
//             var url = mergedConfig.baseURL
//                 ? mergedConfig.baseURL.replace(/\/$/, '') + '/' + mergedConfig.url.replace(/^\//, '')
//                 : mergedConfig.url;

//             // 转换data为JSON字符串(如果是POST/PUT等方法)
//             var data = mergedConfig.data;
//             if (data && ['POST', 'PUT', 'PATCH'].indexOf((mergedConfig.method || 'GET').toUpperCase()) !== -1) {
//                 if (mergedConfig.headers['Content-Type'] === 'application/json') {
//                     data = JSON.stringify(data);
//                 }
//             }

//             // 返回Promise
//             return new Promise(function (resolve, reject) {
//                 $.ajax({
//                     url: API_BASE + url,
//                     method: mergedConfig.method || 'GET',
//                     headers: mergedConfig.headers || {},
//                     data: data,
//                     dataType: mergedConfig.dataType || 'json',
//                     timeout: mergedConfig.timeout,
//                     xhrFields: {
//                         withCredentials: true // 发送浏览器存储的 Cookie
//                     },
//                     success: function (response) {
//                         if (response.code === 200) {
//                             resolve(
//                                 response.data,
//                             );
//                         } else {
//                             reject(response)
//                         }

//                     },
//                     error: function (jqXHR) {
//                         reject({
//                             message: jqXHR.statusText,
//                             response: {
//                                 data: jqXHR.responseJSON || jqXHR.responseText,
//                                 status: jqXHR.status,
//                                 statusText: jqXHR.statusText
//                             },
//                             config: mergedConfig
//                         });
//                     }
//                 });
//             });
//         },

//         // 合并配置
//         _mergeConfig: function (config) {
//             return $.extend(true, {}, this.defaults, config);
//         },

//         // HTTP方法快捷方式
//         get: function (url, config) {
//             return this.request($.extend({}, config, { method: 'GET', url: url }));
//         },

//         post: function (url, data, config) {
//             return this.request($.extend({}, config, { method: 'POST', url: url, data: data }));
//         },

//         put: function (url, data, config) {
//             return this.request($.extend({}, config, { method: 'PUT', url: url, data: data }));
//         },

//         delete: function (url, config) {
//             return this.request($.extend({}, config, { method: 'DELETE', url: url }));
//         }
//     };

//     const shareCode = window.$utils.getUrlParams()?.shareCode

//     var $apis = {
//         getBase: function () {
//             return $request.get(`/portal/tax/share/getShareReport?shareCode=${shareCode}`)
//         },
//         getTax: function () {
//             return $request.get(`/portal/tax/share/v2/getEnterprisePaidTaxesAmount?shareCode=${shareCode}`)
//         },
//         getPaidTax: function (taxType) {
//             return $request.get(`/portal/tax/share/v2/getEnterprisePaidTaxesDataList?shareCode=${shareCode}&taxType=${taxType}`)
//         },
//         getBill: function () {
//             return $request.get('/portal/tax/share/v2/getEnterpriseInvoiceInfo?shareCode=' + shareCode)
//         },
//         getApply: function () {
//             return $request.get(`/portal/tax/share/v2/getEnterpriseApplyAmount?shareCode=${shareCode}`)
//         },
//         getCompany: function () {
//             return $request.get(`/portal/tax/share/getEnterpriseInvoiceTopTen?shareCode=${shareCode}`)
//         },
//         getEnterprise: function () {
//             return $request.get('/portal/tax/share/getEnterpriseCases?shareCode=' + shareCode)
//         }

//     }

//     // 暴露全局变量
//     window.$request = $request;
//     window.$apis = $apis

// })(window, jQuery);  